/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package restaurante.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import restaurante.bancodados.CriaConexao;
import restaurante.logica.NotaFiscal;
import restaurante.logica.Produto;
import restaurante.logica.Venda;

/**
 *
 * @author Fernanda
 */
public class NotaFiscalDao {
    private Connection conexao;

    public NotaFiscalDao() throws SQLException{
        this.conexao = CriaConexao.getConexao();
    }

    public void adiciona(NotaFiscal nf) throws SQLException{
        String  sql = "insert into nota_fiscal (id_refeicao,data,cpf_cliente)" +
                "values (?,?,?)";
        PreparedStatement stmt = conexao.prepareStatement(sql);

        // Seta os valores
        stmt.setString(1, String.valueOf(nf.getId_refeicao()));
        stmt.setString(2, nf.getData());
        stmt.setString(3, nf.getCpf_cliente());

        // Executa o código SQL
        stmt.execute();

        // Identificar qual é o último ID criado
        ResultSet lastId = stmt.getGeneratedKeys();
        lastId.next();        
        nf.setNumero(lastId.getInt(1));

        stmt.close();
    }

    public  NotaFiscal getNota(String numero) throws SQLException{
        String sql = "Select numero,id_refeicao,data,cpf_cliente" +
                    " from nota_fiscal " +
                    "where numero=?";
        PreparedStatement stmt = this.conexao.prepareStatement(sql);

        stmt.setString(1, numero);       // inserção do caracter de busca.

        ResultSet rs = stmt.executeQuery();

        NotaFiscal nf = new NotaFiscal();       

        while(rs.next()){
            nf.setNumero(rs.getInt("numero"));
            nf.setId_refeicao(rs.getInt("id_refeicao"));
            nf.setData(rs.getString("data"));
            nf.setCpf_cliente(rs.getString("cpf_cliente"));
        }

        rs.close();
        stmt.close();

        return nf;
    }

    public  List<Venda> getListaProdutos(String id) throws SQLException{
        String sql = "Select RP.quantidade,P.nome,P.preco_venda " +
                     "from produto P, refeicao_produto RP " +
                     " where RP.id_refeicao=? AND" +
                     "       RP.id_produto=P.id";

        PreparedStatement stmt = this.conexao.prepareStatement(sql);

        stmt.setString(1, id);       // inserção do caracter de busca.

        ResultSet rs = stmt.executeQuery();

        List<Venda> minhaListaProdutos = new ArrayList<Venda>();

        Venda v1 = new Venda();
        while(rs.next()){
            v1.setQuantidade(rs.getInt("quantidade"));
            v1.setNome(rs.getString("nome"));
            v1.setPreco(rs.getFloat("preco_venda"));
            
            minhaListaProdutos.add(v1);
        }

        rs.close();
        stmt.close();

        return minhaListaProdutos;
    }


}
